.magic-button {
  position: relative;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background: #f72359;
  padding: 1em 2em;
  border: none;
  color: white;
  font-size: 1.5em;
  cursor: pointer;
  outline: none;
  overflow: hidden;
  border-radius: 100px;
}
.magic-button span {
  position: relative;
  pointer-events: none;
}
.magic-button::before {
  --size: 0;
  content: '';
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: var(--size);
  height: var(--size);
  background: radial-gradient(circle closest-side, #4405f7, transparent);
  -webkit-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  transition: width .2s ease, height .2s ease;
}
.magic-button:hover::before {
  --size: 400px;
}